#include<iostream>
using namespace std;

class node{
    public:
    int data;
    node*next;
    node(int val){
        data=val;
        next=NULL;
    }
};

void insertAthead(node*&head, int val){
    node*n = new node(val);
    if(head==NULL){
        n->next=n;
        head=n;
    }
    node*temp=head;
    while(temp->next!=head){
        temp=temp->next;
    }
    temp->next=n;
    n->next=head;
    head=n;
}

void insertatTail(node*&head,int val){
    if(head==NULL){
        insertAthead(head,val);
        return;
    }
    node*n=new node(val);
    node*temp=head;
    
    while(temp->next!=head){
        temp=temp->next;
    }
    
    temp->next=n;
    n->next=head;
}
void display(node*head){
    node*temp=head;
    do{
        cout<<temp->data<<" ";
        temp=temp->next;
    }while(temp!=head);
    cout<<endl;
}

int main(){
    node*head=NULL;

    insertatTail(head,1);
    insertatTail(head,2);
    insertatTail(head,3);
    insertatTail(head,4);
    display(head);
    insertAthead(head,6);
    display(head);

}
